
	$(document).ready(function(){

			$("#search_textbox").keyup(function(event){
			if(event.keyCode == 13){
				$("#search_button").click();
			}
			});
			
	
			$("#quickBuy-search").on("click",  function(){
				var _event_id = $("#quickBuy-dates option:selected").attr("event_id");
				window.location.href = getCookie("base_url") + "events/view/" + _event_id;
			});
			
			$( "#quickBuy-events" ).change(function() {
			  var _long_title = $( "#quickBuy-events option:selected" ).attr("event_long_title");
				if(typeof _long_title != "undefined"){
					getDatesbyEventLongTitle(_long_title);
				 }else{
					 clearDates();
				 }
			});


		
			if(	localStorage.getItem("allEvents") != null || localStorage.getItem("allEvents") != "" ){
				getLastSync(function(last_modified){
					if(last_modified != last_date_modified()){
						RELOAD(true);
					}
				});
			}
	//======================================================
		displayLoading();

		if(getCookie("base_url") == ""){
		setCookie("base_url", base_url);
		}

		check_session(function(){
				if(getCookie("api_url") == ""){
						setCookie("api_url",api_url);
						}

						if(getCookie("active_event_id") == ""){
							setCookie("active_event_id","");
						}

						if(getCookie("overideReset") == ""){
							setCookie("overideReset","");
						}
						

						RELOAD();
			
		

							
						// if(localStorage.getItem("ads") === null || localStorage.getItem("ads") == "" || localStorage.getItem("ads") == null ){
							getAllAds();
						// }

					
						if(getCookie("username") != "" ){	
							heartbeat("check", getCookie("session"),function(result){

								if(result <= 0){

										logout(function(){
											request_session(function(){
												window.location=getCookie("base_url");
											});
										});					
								}else{
									heartbeat("extend", getCookie("session"));
								}

							});
						}
		
		});
	
		 // fillHotEvents();

	  });



		function getLastSync(callback){

				$.ajax({
				type:'POST',
				url:getCookie("base_url")  + '/events/getLastDateModified/',
				success:function(data){
					
					if (callback && typeof(callback) === "function") {
					callback(data);
					}

				}});

			}


			  function last_date_modified(){
				latest = "0";
					$.each(JSON.parse(	localStorage.getItem("allEvents")	), function(i, events){
						if(events.event_date_modified > latest){
							latest = events.event_date_modified;					
						}
								
					});
				  return latest;
			  }
	  
	


	function RELOAD(	hard_reload		){
				
				if(hard_reload == 1){
						getAllEvents(function(){
							fillHotEvents();
							getAllAds();
							fillMenusAndPanels();
						});
				}else{
						if(	localStorage.getItem("allEvents") === null || localStorage.getItem("allEvents") == "" || localStorage.getItem("allEvents") == null ||	localStorage.getItem("allEvents").indexOf('A PHP Error was encountered') > -1		){
							getAllEvents(function(){
								fillHotEvents();
								getAllAds();
								fillMenusAndPanels();
							});
						}else{
							fillMenusAndPanels();
							fillHotEvents();
						}
				}
			}




	
			function loadLocalVenues(limit){

			$.ajax({
			cache :false,
			// datatype :"json",
			type:'POST',
			data:'',
			url: getCookie("base_url") + '/events/venue_count/' + limit,
			success:function(data){

				$.each(JSON.parse(data), function(i, venue){
					//section_id = ticket_info['section_id'];
					$("#venue_group").append('<a href="'+ getCookie("base_url") +'events/venue/'+venue['venue_id']+'" class="list-group-item">'+venue['venue_name']+'<em> - '+venue['event_count']+' events</em></a>');
				});
				
				$("#local_venues").show();
				$("#venue_group").append('<a id="more_venues" href="/venues" class="list-group-item"><strong style="color:#416993;">More Venues..</strong></a>');
			}
			});

			} 

			function fillMOAevents(limit,callback){
			items = "";
			counter = 1;
			$.each(	JSON.parse(	localStorage.getItem("allEvents")), function(i, events){
			if(events["event_venue_id"] == "115" && counter <= limit){
				items = items + "<a href='"+ getCookie("base_url") + "events/view/" + events["event_id"]  +"' class='list-group-item'>" + events["event_title"] + "&nbsp; <i class='date'>"+ parseDate(events["event_date_time"]) +"</i></a>";

				counter++;
			}	 

			});

			items = items + "<a id='more_moa_events' href='#' class='list-group-item'><strong>More Events..</strong></a>";
			$("#event_group").html(items);
			if (callback && typeof(callback) === "function") {
			callback();
			}
			}

			function fillEventsPanel(element,match,limit,callback){
			items = "";
			counter = 1;
			
			event_long_title_counter = [""];
			
			$.each(sortJson(localStorage.getItem("allEvents"),"event_date_time","asc"), function(i, events){

					matches = match.toLowerCase().split(" ");
					var j;
					for (j = 0; j < matches.length; ++j) {
						
						
						if(events["event_tags"].toLowerCase().indexOf( matches[j] ) > -1 && counter <= limit && event_long_title_counter.indexOf(  events["event_long_title"] ) == -1 ){
						
						
						items = items + "<a href='"+ getCookie("base_url") + "events/view/" + events["event_id"]  +"' class='list-group-item'>" + events["event_title"] + "&nbsp; <i class='date'>"+ parseDate(events["event_date_time"]) +"</i></a>";
						
						
						event_long_title_counter.push(	events["event_long_title"]	);

						
						counter++;
						}
					}
					
					// console.log(event_title_counter);
			})	 

			items = items + "<a id='more_"+ element +"_events' href='#' class='list-group-item'><strong>More Events..</strong></a>";

			$("#" + element).html(items);

			if (callback && typeof(callback) === "function") {
			callback();
			}
 
			}

	  		function fillMenusAndPanels( callback ){
			fillQuickbuyList( localStorage.getItem("allEvents"),function(){
					generateEventTitle(localStorage.getItem("allEvents"),function(){
						init_searchbox();




							loadLocalVenues(3);
							fillMOAevents(10);
							fillEventsPanel('music','music',5);
							fillEventsPanel('sports','sport',5);
							fillEventsPanel('art','art science gallery',5);
							fillEventsPanel('family','family',5);			
									
							if (callback && typeof(callback) === "function") {
								callback();
							}
									





					});
				});
		}
		
				
			function check_session(callback){
				
				if(getCookie("session") == ""){
					request_session(callback);
				}else{
					callback();
				}
				
			}

			function clearDates(){
					
					$('#quickBuy-dates')
					.find('option')
					.remove()
					.end();
					
					$("#quickBuy-dates").append('<option>select date..</option>');
					$( "#quickBuy-dates" ).selectmenu("refresh");
				}
				
			function getAllEvents(callback){
				
				
					$.ajax({
					cache :false,
					type:'POST',
					url: getCookie("base_url") + "/events/getEventsforQuickBuy",
					success:function(data){

					localStorage.setItem("allEvents",data );

					if (callback && typeof(callback) === "function") {
						callback();
					}

					}});	
			}
			
			function fillQuickbuyList(json_string,callback){	
			
				_options = "<option selected='selected'>select event..</option>";
				
				
				unique_title = [];
				$.each(JSON.parse(json_string), function(i, events){
				if(	events["event_parent"] != "0"){
					
					if(unique_title.indexOf(	events["event_long_title"]	) == -1 ){
						_options = _options + "<option event_id='" + events["event_title"] +"' event_long_title='" + events["event_long_title"] + "'>" + events["event_long_title"]  + "</option>";
						unique_title.push(	events["event_long_title"]	);
					}
				}else{
					_options = _options + "<option event_id='" + events["event_title"] +"' event_long_title='" + events["event_long_title"] + "'>" + events["event_title"] + "</option>";
				}

				

				});
				
				$("#quickBuy-events").html(_options);
				$("#quickbuy_container").css("display","inherit");	
				
				if (callback && typeof(callback) === "function") {
						callback();
				}	
			}
			
			
			function getDatesbyEventLongTitle(_long_title){

					$.ajax({
					cache :false,
					type:'POST',
					data:{ long_title: _long_title },
					url: getCookie("base_url") + "/events/getEventDatesbyLongTitle",
					success:function(data){	
					
				$('#quickBuy-dates')
					.find('option')
					.remove()
					.end();
				 		
						if(data != "null"){
						var obj = $.parseJSON(data);					
							 $.each($.parseJSON(data), function(i, event_info){
									fillDateList(event_info['event_date_time'],event_info['event_id']);			
							}); 
						}

					}}); 
			}

			function fillDateList(_date,_event_id){
				var t = _date.split(/[- :]/);
			
				// Apply each element to the Date function
				var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);

				var date = d.getDate();
				var month =  d.getMonth();
				month += 1;  // JavaScript months are 0-11
				var year = d.getFullYear();

				var months = [ "January", "February", "March", "April", "May", "June", 
               "July", "August", "September", "October", "November", "December" ];

			   
			   
			   
			   if(d.getHours() > 12){
				   hours = d.getHours() - 12;
				   
			   }else{
				   hours = d.getHours();
			   }
			   
			  if(d.getMinutes() < 10){
				  minutes = "0" + d.getMinutes();
			  }else{
				  minutes = d.getMinutes();
			  }
			   			   


			  if(d.getHours() > 11){
					am_pm = "PM";
			   }else{
					am_pm = "AM";
			   }
			   






				var _fullDate = months[month-1] +" "+ d.getDate() +" "+ d.getFullYear()  + " "+ hours + ":" + minutes + " " + am_pm; 
				
				$("#quickBuy-dates").append("<option event_id='" + _event_id + "'>" + _fullDate + "</option>");
			}
 
			 		
			function generateEventTitle(jsonString,callback){
			
			event_titles = "[";
			$.each(JSON.parse(jsonString), function(i, events){
				event_titles = event_titles + '"' +  events["event_title"].replace(/['"]+/g, '') + '",';
			});
			event_titles = event_titles.slice(0,-1) + "]"; 
			localStorage.setItem("event_titles",event_titles);

				if (callback && typeof(callback) === "function") {
						callback();
				}	
			
			}
 	

			function init_searchbox(){

			
			json_array = localStorage.getItem("event_titles");
			
			
			$('#search_button').blur();
			
				$('#search_button').typeahead({
				minLength: 1,
				order: "asc",
				groupMaxItem: 6,
				hint: true,
				source: $.parseJSON(json_array),
				debug: true,
				callback: {	onSubmit: function(){
						window.location.href = getCookie("base_url")  + "events/search/" + htmlEntities($("#search_button").val());}
				}});

			}

		  
			function htmlEntities(str) {
				return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
			}
	  
	  
		function displayLoading(callback){
			
			if($("#loading").is(':visible')){
				$("#loading").hide();
			}else{
				$("#loading").show();
				
			}
			
			if (callback && typeof(callback) === "function") {
				callback();
			}
			
		}


		function request_session(callback){
			
			requested_session = false;
			
			$.ajax({
				cache :false,
				type:'POST',
				asynchronous:false,
				data:'',
				url: getCookie("base_url")  + '/users/issue_tempo_session',
				success:function(data){
			
					if(data != "null"){
						requested_session = data;
						
						deleteCookie("username",function(){
							setCookie("session",requested_session,99999);
						});
					
		
						
						if (callback && typeof(callback) === "function") {
						callback();
						}
						
						
					}
				}}); 
			
			
		}


		function setCookie(cname, cvalue, exdays) {
			
			cname = "sm_" + cname;
			var d = new Date();
			d.setTime(d.getTime() + (exdays*24*60*60*1000));
			var expires = "expires="+d.toUTCString();
			
			document.cookie = cname + "=" + cvalue + "; " + expires + ";path=/";
			
			if(cvalue != ""){
			}

		}


		function getCookie(cname) {
			cname = "sm_" + cname;
			var name = cname + "=";
			var ca = document.cookie.split(';');
			for(var i=0; i<ca.length; i++) {
				var c = ca[i];
				while (c.charAt(0)==' ') c = c.substring(1);
				if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
			}
			return "";
		}
			

		function deleteCookie(cname,callback){

			cname = "sm_" + cname;
			
			document.cookie = cname + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/";
		
			if (callback && typeof(callback) === "function") {
				callback();
			}
			
		}


	
		function heartbeat(mode, session, callback){
			
			   $.ajax({		
					url: getCookie("base_url") + "/users/heartbeat/" + mode +"/" + session,
					success: function(response){
						
						console.log(getCookie("base_url") + "/users/heartbeat/" + mode +"/" + session);
	
						if (callback && typeof(callback) === "function") {
							callback(response);
						}
					}	
				});
			
		}
	



	function logout(callback){
		
				$.ajax({		
				url: getCookie("base_url")+"/users/logout/" + getCookie("session"),
				success: function(response) {
					
					// alert(response);
					
					console.log(getCookie("base_url") + "users/logout/" + getCookie("session"));
					if (response=="success") {

						if (callback && typeof(callback) === "function") {
							callback(response);
						}
						
					}
				}	
			});
	}
		
		
	function unsellect_all(_sectionid,callback){
		
		 if (_sectionid === undefined) {
			 _sectionid = "";
		 }
	
		displayLoading();
		$.ajax({
		type:'POST',
		url:getCookie("base_url")  + '/tickets/unsellect_all_by_session/' + getCookie("session") + '/' + _sectionid,
		success:function(data){
		displayLoading();	
		console.log(getCookie("base_url")  + '/tickets/unsellect_all_by_session/' + getCookie("session") + '/' + _sectionid);	
		
			if (callback && typeof(callback) === "function") {
				callback();
			}
			
		}});
	
	}
	  

	  
	  function getEventDetailsByID(event_id, json_string){
		event_array =	false;
			$.each(JSON.parse(json_string), function(i, events){
				if(event_id == events["event_id"]){
					event_array = { event_active:events["event_active"],event_id:events["event_id"],event_title:events["event_title"],event_date_time:events["event_date_time"],event_tags:events["event_tags"],event_venue_id:events["event_venue_id"],event_venue_name:events["event_venue_name"],event_image_accordion:events["event_image_accordion"] };
				}	
			});
		  return event_array;
	  }
	  
	  
	  function fillHotEvents(callback ){
		  
			$(".carousel-inner").empty();
			string = "";
			_isActive = "active";

		   hot_event_array = getCookie("hot_events").split(" ");
		   i = 0;
			for (i = 0; i < hot_event_array.length; ++i){
				
					hot_event_object =  getEventDetailsByID(hot_event_array[i], localStorage.getItem("allEvents") );
					if(hot_event_object != false){
							
							var ev_title = hot_event_object.event_title;
							var placeDate = parseDate(hot_event_object.event_date_time) + ' - ' + hot_event_object.event_venue_name;
							var shortTitle = jQuery.trim(ev_title).substring(0, 140)
								.split(" ").slice(0, -1).join(" ") + "..";
							var shortPlace = jQuery.trim(placeDate).substring(0, 70)
								.split(" ").slice(0, -1).join(" ") + "...";	
								
							

							string = string + "<div style='width: 100%;' class='item " + _isActive + " item_slider row'>";
							string = string + "<div style='height: 250px;'><a  href='" + getCookie("base_url")  + "events/view/" + hot_event_object.event_id + "'><img style='height: 250px;' class='lazyOwl'  data-src='" + decodeURIComponent(hot_event_object.event_image_accordion) + "'  onError='imgError(this)'></a></div><p class='slider_event_title' style='padding-top: 10px; padding-bottom: 10px; background-color: black; height: 80px; font-weight: normal; font-size: 5px; '><a class='slider_event_title' title='" +  hot_event_object.event_title + "\n" + hot_event_object.event_venue_name + " - " +parseDate(hot_event_object.event_date_time) + "' href='" + getCookie("base_url") + "events/view/" + hot_event_object.event_id + "'><font style='font-weight: bold; font-size: 12px;'>" + ev_title + "</font></br>" + shortPlace + "</a></p></div>";




							
							
							if(_isActive == "active"){
								_isActive = "";
							}
							$(".carousel_main").append(string);
							string = "";
				}
					  
			}
			
				if (callback && typeof(callback) === "function") {
						callback();
				}
			
			

	  }
	  
	  
	 function sortJson(json_string, index,  dir){
		
		json_string =  eval ("(" + json_string + ")");
		
		return json_string.sort(function(a,b) {
						
				propA = a[index].replace(/-/g, "").replace(/ /g, "").replace(/:/g, "");
				propB = b[index].replace(/-/g, "").replace(/ /g, "").replace(/:/g, "");
				
			if (dir=='asc') {
				return propA - propB;
			} else {
				return propB - propA;
			}
		}); 

	}
	
	
	function getAllAds(callback){
			
			$.ajax({
			cache :false,
			url: getCookie("base_url") + '/sections/getadsimage',
			success:function(data){	
				if(data != undefined && data != ""){
					
					localStorage.setItem("ads",data );
					if (callback && typeof(callback) === "function") {
						callback(data);
					}
				}
			}
		
			});
	}
	

	 function parseDate(_date){
		 
		 var t = _date.split(/[- :]/);
					
			// Apply each element to the Date function
			var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);

			var date = d.getDate();
			var month =  d.getMonth();
			month += 1;  // JavaScript months are 0-11
			var year = d.getFullYear();

			var months = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", 
		   "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];

			var _fullDate = months[month-1] +" "+ d.getDate();
			
			return _fullDate;
		 
	 }
		 
	function getRandomInt(min, max) {
		return Math.floor(Math.random() * (max - min + 1)) + min;
	}

	function pullAdd(){

			Lead_ads	=	new Array();
			Side_1_ads	=	new Array();
			Side_2_ads	=	new Array();
			Side_3_ads	=	new Array();
			Foot_ads	=	new Array();
			right_side_2_ads = new Array();
			right_side_3_ads = new Array();
			left_side_1_ads = new Array();
			left_side_2_ads = new Array();
			center_bottom_ads = new Array();
			
			ads = JSON.parse(	localStorage.getItem("ads")	);
		
			$.each(ads, function(i, ad){
				if(ad.type == "Lead"){
					Lead_ads.push(ad);
				
				}else if(ad.type == "Side_1"){
					Side_1_ads.push(ad);
				}else if(ad.type == "Side_2"){
					Side_2_ads.push(ad);
				}else if(ad.type == "Side_3"){
					Side_3_ads.push(ad);
				}else if(ad.type == "Foot"){
					Foot_ads.push(ad);
				}else if(ad.type == "right_side_1"){
					right_side_1_ads.push(ad);
				}else if(ad.type == "right_side_2"){
					right_side_2_ads.push(ad);
				}else if(ad.type == "right_side_3"){
					right_side_3_ads.push(ad);
				}else if(ad.type == "left_side_1"){
					left_side_1_ads.push(ad);



				}else if(ad.type == "left_side_2"){
					left_side_2_ads.push(ad);
				}else if(ad.type == "center_bottom"){
					center_bottom_ads.push(ad);
				}
				
			})
			
			$("#ad_container").html(	$("#nextAd_top").html()	);
			$("#side_ads").html(	$("#nextAd_side").html()	);
			$("#right_side_2").html(	$("#nextright_side_2").html()	);
			$("#right_side_3").html(	$("#nextright_side_3").html()	);
			$("#left_side_1").html(	$("#nextleft_side_1").html()	);
			$("#left_side_2").html(	$("#nextleft_side_2").html()	);
			$("#center_bottom").html(	$("#nextcenter_bottom").html()	);
			
			
			if(Lead_ads!=''){
			random_index_top = Math.floor(Math.random()*Lead_ads.length);
			$("#nextAd_top").html('<a href="'+Lead_ads[random_index_top]['link']+'" target="_blank"><img class="img-responsive" src="'+Lead_ads[random_index_top]['image']+'" alt="'+Lead_ads[random_index_top]['name']+'" style="margin: 0 auto; max-height:70px;margin-top:3px;"></a>');	
			}else{
				$("#nextAd_top").html('');
			}
			if(Side_1_ads!=''){
			random_index_side = Math.floor(Math.random()*Side_1_ads.length);
			$("#nextAd_side").html('<a href="'+Side_1_ads[random_index_side]['link']+'" target="_blank"><img class="img-responsive" src="'+Side_1_ads[random_index_side]['image']+'" alt="'+Side_1_ads[random_index_side]['name']+'" style="margin: 0 auto;width:100%;margin-top:15px;"></a>');
			}else{
				$("#nextAd_side").html('');
			}
			
			if(right_side_2_ads!=''){
			random_right_side2 = Math.floor(Math.random()*right_side_2_ads.length);
			 $("#nextright_side_2").html('<a href="'+right_side_2_ads[random_right_side2]['link']+'" target="_blank"><img class="img-responsive" src="'+right_side_2_ads[random_right_side2]['image']+'" alt="'+right_side_2_ads[random_right_side2]['name']+'" style="margin: 0 auto;width:100%;margin-top:15px;"></a>');	
			}else{
				// console.log('not');
				 $("#nextright_side_2").html('');	
			}
			
			if(right_side_3_ads!=''){
			random_right_side3 = Math.floor(Math.random()*right_side_3_ads.length);
			$("#nextright_side_3").html('<a href="'+right_side_3_ads[random_right_side3]['link']+'" target="_blank"><img class="img-responsive" src="'+right_side_3_ads[random_right_side3]['image']+'" alt="'+right_side_3_ads[random_right_side3]['name']+'" style="margin: 0 auto;width:100%;margin-top:15px;"></a>');				
			}else{
				
				 $("#nextright_side_3").html('');	
			}
			
			if(left_side_1_ads!=''){
			random_left_side1 = Math.floor(Math.random()*left_side_1_ads.length);
			$("#nextleft_side_1").html('<a href="'+left_side_1_ads[random_left_side1]['link']+'" target="_blank"><img class="img-responsive" src="'+left_side_1_ads[random_left_side1]['image']+'" alt="'+left_side_1_ads[random_left_side1]['name']+'" style="margin: 0 auto;width:100%;margin-top:15px;"></a>');
			}else{
				
				$("#nextleft_side_1").html('');	
			}
			
			if(left_side_2_ads!=''){
			random_left_side2 = Math.floor(Math.random()*left_side_2_ads.length);
			$("#nextleft_side_2").html('<a href="'+left_side_2_ads[random_left_side2]['link']+'" target="_blank"><img class="img-responsive" src="'+left_side_2_ads[random_left_side2]['image']+'" alt="'+left_side_2_ads[random_left_side2]['name']+'" style="margin: 0 auto;width:100%;margin-top:15px;"></a>');






			}else{
				$("#nextleft_side_2").html('');

			}
			
			if(center_bottom_ads!=''){
				
				for (var i = 0; i < center_bottom_ads.length; i++) {





					if (i<3) {
						$("#center_bottom").append('<a href="'+center_bottom_ads[i]['link']+'"><img style="width: 570px; margin-bottom: 10px;" src="'+center_bottom_ads[i]['image']+'" ></a>');
					}
				
				}
			}else{
			$("#nextcenter_bottom").html('');	
			}
		}
   	 










		$("#quickBuy-search").on("click",  function(){
			var _event_id = $("#quickBuy-dates option:selected").attr("event_id");
			window.location.href = getCookie("base_url") + "events/view/" + _event_id;
		});
		
		$( "#quickBuy-events" ).change(function() {
		  var _long_title = $( "#quickBuy-events option:selected" ).attr("event_long_title");
			if(typeof _long_title != "undefined"){
				getDatesbyEventLongTitle(_long_title);
			 }else{
				 clearDates();
			 }
		});

